ctxt.syscall_callback_eip = (unsigned long)system_call;
ctxt.ctrlreg[3] = virt_to_mfn(init_level4_pgt) << PAGE_SHIFT;
+
+ ctxt.gs_base_kernel = (unsigned long)(cpu_pda + vcpu);
#endif
BUG_ON(HYPERVISOR_vcpu_op(VCPUOP_initialise, vcpu, &ctxt));
if (IS_ERR(idle))
panic("failed fork for CPU %d", cpu);
+#ifdef __x86_64__
+ cpu_pda[cpu].pcurrent = idle;
+ cpu_pda[cpu].cpunumber = cpu;
+ per_cpu(init_tss,cpu).rsp0 = idle->thread.rsp;
+ clear_ti_thread_flag(idle->thread_info, TIF_FORK);
+#endif
+
irq_ctx_init(cpu);
cpu_gdt_descr[cpu].address =